One or more aspects relate, in general, to processing within a computing environment, and in particular, to protecting data of the computing environment.
Corruption of computer programs may occur in many forms. One such form is the overwriting of data causing the program to perform tasks or return to addresses that are unexpected. This corruption may be innocent or malicious. As a particular example, the corruption may occur in a call stack (also referred to as a stack) used by a computer program to store information about the active subroutines of the computer program. For example, a stack is used to keep track of the point to which an active subroutine should return control (i.e., return address) when the routine finishes executing. An active subroutine is one that has been called, but is yet to complete execution. Such activations of subroutines may be nested to any level (recursive as a special case), hence the stack structure. Stacks may be corrupted by overwriting the return addresses, thereby having a called subroutine return to an unexpected location.
Again, the overwriting of the return address may be innocent or malicious, but regardless, is to be detected and planned for such that the program or other data is not corrupted.